Software is typically developed in a language of a developer with interfaces tailored to a region of the developer. For example, much software is developed in English for use in North America. In order to expand a user base for the software, the software may be translated into foreign languages and otherwise modified for use in other regions.
Internationalization and localization are a means of adapting software to different regions, and includes adapting for different languages, for regional differences and for different technical requirements of a target market. Internationalization (also known as i18n) refers to the process of designing the software so that it can be readily adapted to different languages and regions without reprogramming the software. Internationalized software is designed for use in a range of locales by allowing the co-existence of multiple languages and character sets for input, display and a user interface. Localization (also known as L10n) refers to the process of adapting software that has already been internationalized for a specific region or language by adding locale specific components and/or translating text. Localized software has been configured for use in a particular locale.
Typically, providing a localization package for a particular language or region includes hiring specialized technical writers to construct a culturally appropriate syntax for potentially complicated concepts, as well as using engineering resources to deploy and test localization components. The cost of localizing software for a particular region can be quite high. Thus, it may not be economically viable to localize software for relatively small language populations. Moreover, it can be difficult to maintain parallel versions of texts throughout the life of an application or other software. For example, if a message that will be displayed to a user is modified, all of the translated versions of that message should be modified as well. This lengthens the development cycle and increases development costs.